package modelo;

import java.util.Collection;
import modelo.excepciones.EdificioInexistente;

public class GeneradorDeEdificios{

	private String directorio;

	public GeneradorDeEdificios(){
		String nombre_total_clase = ((new Banco(true)).getClass()).getName();
		directorio = nombre_total_clase.substring(0, ((nombre_total_clase.length()) - ("Banco".length())));
	}

	public Edificio obtenerEdificio(String nombre, boolean pistaDeLadron) throws EdificioInexistente {
		String nombre_con_mayusc = nombre.substring(0,1).toUpperCase() + nombre.substring(1, nombre.length());
		Edificio edificio = null;
		try{
			edificio = (Edificio) Class.forName(directorio+nombre_con_mayusc).getDeclaredConstructor(boolean.class).newInstance(pistaDeLadron);
		} catch (ClassNotFoundException e){
			throw new EdificioInexistente(nombre);
		} catch (Exception e){}
		return edificio;
	}

	public boolean edificiosSonDeDistintaIndole(Collection<Edificio> edificios){
		for (Edificio edif1 : edificios){
			for (Edificio edif2 : edificios){
				if (edif2 != edif1){
					if (edif1.esDeMismaIndoleQue(edif2)){
						return false;
					}
				}
			}
		}
		return true;		
	}



}